<?php
$dsn = "mysql:host=localhost;dbname=bd_fresh";
$db = new PDO($dsn,'root','root');
//构造方法
//设置异常可以捕获
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//设置字符集
$db->exec("SET NAMES 'UTF8'");


//自动回滚仅发生于通过beginTransaction()建立的事务,如果用手动的方式执行一个开始事务的查询,PDO无法知道他的情况
//所以没办法回滚    向下面的数据,执行正确的可以进入数据库  但是执行错误的就不行   按照道理来说   只要有一个错误了应该执行回滚
//d但是这里因为是手动的,所以不执行回滚
//开启事务
//$db->beginTransaction();
//try {
////正常的执行sql语句
//    //正常的sql语句是可以执行的
//    $db->exec("INSERT INTO bd_client(client_name,client_abbre,client_code) VALUES('事务名称','事务简称','23122')");
//    //这条语句是错误的，所以没有办法执行
//    $db->exec("INSERT INTO bd_client(client_name,client_abbre,client_codes) VALUES('事务名称','事务简称','23122','1212')");
//    $db->commit();
//}catch(Exception $e){
//    echo $e->getMessage();
//    $db->rollBack();
//}

try {
    $db->beginTransaction();
    $db->exec("INSERT INTO bd_client(client_name,client_abbre,client_code) VALUES('事务名称','事务简称','23122')");
//这条语句是错误的，所以没有办法执行
//    $db->exec("INSERT INTO bd_client(client_name,client_abbre,client_codes) VALUES('事务名称','事务简称','23122','1212')");
    $db->commit();
}catch(Exception $e){
    echo $e->getMessage();
    $db->rollBack();
}

